﻿using Sustainalytics.Entities;
using System;
using System.Collections.Generic;

namespace Sustainalytics.FTPReport.BusinessLogic
{
    public interface IReportsFtpManagement
    {
        #region ReportFTP

        ReportFTP LoadReportFtpForAccountId(Guid accountId);

        ReportFTP LoadReportFtp(Guid id);

        void CreateReportFtp(ReportFTPDto reportFTPDto);

        void UpdateReportFtp(ReportFTPDto reportFtpModified);

        void DeleteReportFtpForAccountAndReportId(Guid accountId, Guid reportFtpId);

        void DeleteReportFtp(Guid reportFtpId);

        void DeleteReportFtpForAccount(Guid accountId);

        bool IsConnectionToFTPServerAllowed(string username, string password, string serverAddress, int serverPort);

        bool IsConnectionToSSHFTPServerAllowed(string username, string password, string serverAddress, int serverPort);

        string EncryptStringAES128(string textToEncrypt);

        string DecryptAES128(ReportFTP reportFTPEntity);

        #endregion


        #region FTPClientReport
        FtpClientReport LoadFtpClientReport(Guid accountId, Guid reportId);

        List<FtpClientReport> LoadFtpClientReportsForAccount(Guid accountId);

        void AddFtpClientReport(FtpClientReportDto ftpClientReportDto);

        void ModifyFtpClientReport(FtpClientReportDto ftpClientReportDto);
        
        void ModifyFtpClientReportLastAndNextGeneratedDateToNow(FtpClientReport ftpClientReportDto);

        void DeleteFtpClientReport(Guid accountId, Guid reportId);

        void DeleteFtpClientReportsForAccount(Guid accountId);

        #endregion
     
    }
}
